<?php
function f_conectarse(){
	/*
	@author rmunoz
	@version 1.0
	@return $dbh PDO object conexion base de datos
	@date 10:28 02-03-2012
	@package floresyfrutas
	*/
	/* funcion que utiliza PDO para conecta a la base de datos [retorna $dbh] */
	/* conecta a la base de datos */		
	$is_driver = "mysql";
	$is_servidor = "localhost";
	$is_basededatos = "floresyfrutas";
	$is_usuario = "root";
	$is_contrasena = "";

	try {
		$dbh = new PDO("".$is_driver.":host=".$is_servidor.";dbname=".$is_basededatos."", $is_usuario, $is_contrasena );;
	} catch (PDOException $e) {
		print "Error!: " . $e->getMessage() . "<br/>";
		die();
	}
	return $dbh;
	// $dbh = f_conectarse();

}

function f_select($is_consulta, $ia_consulta = null, $ii_fetch = 0 ){ 
	/*
	@author rmunoz
	@version 1.0
	@return $ia_return array
	@date 10:28 02-03-2012
	@package floresyfrutas 
	*/
	/* funcion que utiliza PDO::fetch y PDO::fetchAll para retornar los parametros seleccionados en un arreglo $ia_return */
	/* 	$ii_fetch = 0 -> fetch
		$ii_fetch = 1 -> fetchAll */
		
	$ia_return = "";
	
	try {
		$dbh = f_conectarse();
		
		$stmt = $dbh->prepare($is_consulta);
		
		if ( isset($ia_consulta) && !is_null($ia_consulta)){
			PDOBindArray($stmt,$ia_consulta);
		}
		
		if ($stmt->execute()) {
			if ( 0 == $ii_fetch){
				$ia_return = $stmt->fetch();
			}else
			if ( 1 == $ii_fetch){
				$ia_return = $stmt->fetchAll();
			}else
			if ( 2 == $ii_fetch){
				$ia_return = $stmt;
			}
		}
		$dbh = null;
	} catch (PDOException $e) {
		print "Error!: " . $e->getMessage() . "<br/>";
		die();
	}
	
	return $ia_return;
}

function PDOBindArray(&$poStatement, &$paArray){ 
	/*
	@author rmunoz
	@version 1.0
	@return $poStatement PDO::Statement
	@date 10:28 02-03-2012
	@package floresyfrutas
	@example 
		$inputArray = array(
			':email' => array($email, PDO::PARAM_STR), 
			':pass' => array($pass, PDO::PARAM_STR)
		);
	*/
	// print_r( $paArray );
	/* funcion que utiliza PDO::bindValue para setear los parametros a ingresar en una consulta SQL */
    foreach ($paArray as $k=>$v) {
        @$poStatement->bindValue($k, $v[0], $v[1]);
    }      
}
	
function f_validar_permiso($ii_perfil, $ii_modulo, $ii_accion ){
	
	/*
	@author rmunoz
	@version 1.0
	@return $ii_permiso integer
	@date 12:07 02-03-2012
	@package floresyfrutas
	*/
	/* funcion que retorna 1 si existe el permiso vigente para el perfil en tal modulo para una accion */
	
	try {
		$ii_permiso = 0;
		
		$Q_permiso  = " SELECT 1 as PERMISO ";
		$Q_permiso .= " FROM permiso ";
		$Q_permiso .= " WHERE perm_c_perfil = :perfil " ;
		$Q_permiso .= " AND perm_c_modulo 	= :modulo " ;
		$Q_permiso .= " AND perm_c_accion 	= :accion " ;
		$Q_permiso .= " AND perm_vigente 	= 1 ";
		
		$inputArray = array(
			':perfil' => array($ii_perfil, PDO::PARAM_INT), 
			':modulo' => array($ii_modulo, PDO::PARAM_INT), 
			':accion' => array($ii_accion, PDO::PARAM_INT)
		);

		$Reg_Q_permiso = f_select($Q_permiso, $inputArray , 0 );
		
	} catch (PDOException $e) {
		print "Error!: " . $e->getMessage() . "<br/>";
		die();
	}
	
	$ii_permiso = ( ( isset( $Reg_Q_permiso["PERMISO"])) && 1 == $Reg_Q_permiso["PERMISO"] ) ? 1 : $ii_permiso ;
	
	return $ii_permiso;
	
}

?>